Introduction

Lors de leur parcours académique, les étudiants explorent la culture générale, une vaste étendue de connaissances transcendant les disciplines. Cette toile de fond intellectuelle enrichit leurs perspectives, nourrit leur curiosité et contribue à leur développement académique, formant ainsi des individus éclairés et dotés d’une vision élargie du monde.

Présentation du sujet

Pour notre projet de fin de semestre nous allons tenter d’analyser certaine caractéristique des étudiants de l’université de Tours concernant leur culture générale dans ce cadre en fait référence à une étude qui a été menée à l’automne 2023.Cette étude, basée sur un sondage réalisé par Mme Scholler et nous, les étudiants de L3 d’Économie à l’université de Tours, dans le cadre de nos cours de logiciel R3. Notre étude se porte sur la culture générale des étudiants, par conséquent nous allons tenter de répondre aux question suivante :

  • Quelle est la perception (niveau de confiance) des répondants sur leur culture générale par genre?

  • A quel question les répondants ont le mieux répondu ?le moins bien répondu?

  • Y a-t-il une corrélation entre le temps de travail personnel et le niveau de culture générale ?

  • Existe-t-il des différences significatives en termes de culture générale entre les filières d’études ?

  • Quel est le niveau de culture générale des étudiants ?

  • Comment la culture générale varie-t-elle en fonction du niveau d’études ?

  • Existe-t-il des différences entre les genres en ce qui concerne la culture générale ?

Présentation des données

Nous disposons de 40 question avec 208 de répondants,des étudiants de L1,L2 et L3 dont l’âge est compris entre 16 et 31 ans, dans la base donnée réalisée par Mme Scholler contenant les réponses des étudiants de l’université de Tours. Les questions abordent divers sujets dont la culture générale, mais nous avons décidé de nous focaliser spécifiquement sur celles-ci. Voici un exemple de questions qui nous ont été posées :

  • Quelle est la plus large chaîne de montagne du monde ?

  • Quel est le nom de la femme noire qui a refusé de céder sa place à un homme blanc dans un bus en 1955 aux États-Unis ?

  • Au cours de quel siècle, Cléopâtre, a-t-elle régné ?

  • Quel naturaliste a révolutionné la biologie avec son ouvrage “L’Origine des espèces” paru en 1859 ?

  • À quel mot correspond la définition suivante : répartition dans le temps d’une charge financière correspondant au remplacement d’un bien, machine, appareil, etc.?

  • Qui est Niki de Saint Phalle ?

  • Combien de temps dure la rotation complète de la Lune autour de la Terre ?

  • En quelle année est définitivement proclamée l’abolition de l’esclavage en France ?

  • Qui a inventé l’expression “la main invisible” ?

  • Quel écrivain et philosophe français a raconté l’histoire de Candide ?

  • Avez-bien joué le jeu et répondu sans consulté de source d’information ?

  • Vous pensez avoir combien de réponses juste sur les 10 questions ? (0 - 10)

Perception de la Culture Générale par Genre

Commentaire

Le diagramme illustre la moyenne et la médiane des évaluations de culture générale en fonction du genre (féminin et masculin). Une observation notable est que les hommes affichent généralement plus de confiance que les femmes. En moyenne, les hommes estiment obtenir une note de 6,26/10, tandis que les femmes estiment atteindre une moyenne de 5,47.

Le segment rouge représente la médiane, qui se situe à 6 pour les deux groupes (féminin et masculin). Ainsi, bien que les deux sexes aient une médiane égale, on peut constater que les femmes semblent avoir une moyenne légèrement inférieure à celle des hommes.

conclusion les hommes semblent avoir une perception de la culture générale plus élevée que les femmes.*

Analyse des Réponses Exceptionnelles et Moins Performantes des Participants

Taux de Bonnes Réponses par Question
Questions Pourcentage de bonnes réponses
Quelle est la plus large chaîne de montagne du monde ? 36.06%
Quel est le nom de la femme noire qui a refusé de céder sa place à un homme blanc dans un bus en 1955 aux États-Unis ? 93.27%
Au cours de quel siècle, Cléopâtre, a-t-elle régné ? 36.06%
Quel naturaliste a révolutionné la biologie avec son ouvrage “L’Origine des espèces” paru en 1859 ? 87.02%
À quel mot correspond la définition suivante : répartition dans le temps d’une charge financière correspondant au remplacement d’un bien, machine, appareil, etc. ? 69.71%
Qui est Niki de Saint Phalle ? 45.67%
Combien de temps dure la rotation complète de la Lune autour de la Terre ? 67.31%
En quelle année est définitivement proclamée l’abolition de l’esclavage en France ? 78.85%
Qui a inventé l’expression ‘la main invisible’ ? 72.12%
Quel écrivain et philosophe français a raconté l’histoire de Candide ? 72.12%

Commentaire

L’analyse des performances des participants révèle que 93.27 % d’entre eux ont répondu correctement à la question 2. En revanche, seulement 36.06 % ont correctement répondu à la question 1, suggérant une difficulté accrue pour cette dernière.

La majorité des participants (78.85 %) ont réussi à répondre correctement à la question 5. Notons cependant que seuls 32.46 % ont correctement répondu à la question 4, soulignant sa complexité pour eux.

Il est également remarquable que 67.31 % des participants ont correctement répondu à la question 3. Bien que cette question soit relativement difficile, la plupart des participants ont pu y répondre correctement.

Concernant les points faibles des participants, la plupart ont échoué à répondre correctement à la question 1, portant sur la chaîne de montagne la plus longue du monde. Malgré des réponses intéressantes, seulement 32.46 % ont répondu correctement.

De plus, seuls 45.67 % des participants ont répondu correctement à la question 4, centrée sur la répartition financière dans le temps, indiquant sa difficulté pour les participants.

Analyse des Performances par Question :

Commentaire

Les questions deux (93.27%), quatre (87.02%), et huit (78.85%) affichent les pourcentages de bonnes réponses les plus élevés par rapport aux autres questions.

Analyse leTemps de Travail Personnel et le Niveau de Culture Générale

commentaitre

Il semble que les données ne montrent pas de corrélation significative entre le temps de travail personnel et le niveau de culture générale chez les étudiants. Les points semblent être dispersés dans l’espace, ce qui indique qu’il n’y a pas de tendance ou de relation claire entre les deux variables.Il est également intéressant de remarquer que le temps de travail personnel n’est pas directement lié au niveau de la culture générale. Bien que la relation entre les deux variables soit moins évidente, cela pourrait être dû au fait que les bonnes réponses ne reflètent pas nécessairement le temps de travail personnel des participants.

Test Pearson

## 
##  Pearson's product-moment correlation
## 
## data:  data_clean$travail_scolaire and data_clean$vrai_note
## t = 0.39714, df = 195, p-value = 0.6917
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1118116  0.1675582
## sample estimates:
##        cor 
## 0.02842844

Commentaire:

Le coefficient de corrélation observé entre le temps de travail personnel et le niveau de culture générale est de 0.02842844, indiquant une corrélation très faible, voire inexistante sur le plan linéaire. La p-value associée à cette corrélation est de 0.6917, dépassant largement le seuil de significativité conventionnel de 0.05. De plus, l’intervalle de confiance à 95% pour le coefficient de corrélation varie de -0.1118116 à 0.1675582. Ces résultats suggèrent qu’il n’y a pas de relation significative entre le temps de travail personnel et le niveau de culture générale dans notre échantillon.

Conclusion :

Les résultats du test de corrélation de Pearson suggèrent qu’il n’y a pas de relation significative entre le temps de travail personnel et le niveau de culture générale dans cet échantillon de données.

Analyse des Différences de Niveau de Culture Générale

Commentaire

ce graphe fournit un aperçu des niveaux de culture générale dans les différentes filières d’études et met en évidence les spécificités de chaque filière en matière de culture générale.Cette information est particulièrement utile pour les décideurs, car elle permet de mieux comprendre les spécificités de chaque filière et d’adapter les programmes et les ressources éducatives en conséquence.

Test de Kruskal-Wallis

## 
##  Kruskal-Wallis rank sum test
## 
## data:  vrai_note by filliere
## Kruskal-Wallis chi-squared = 1.3959, df = 2, p-value = 0.4976

Commentaire :

La valeur du test du chi-carré de Kruskal-Wallis est de 1.3959, reflétant la mesure de la différence globale entre les groupes de filières. La p-value associée à ce test est de 0.4976, dépassant le seuil standard de significativité de 0.05. Ces résultats indiquent qu’il n’y a pas de preuve statistiquement significative pour affirmer que les variations observées dans les niveaux de culture générale entre les filières sont autre chose que le fruit du hasard.

En résumé, les conclusions du test de Kruskal-Wallis suggèrent qu’aucune différence significative n’est observée en termes de culture générale entre les étudiants des diverses filières d’études dans cet échantillon. Autrement dit, selon ces données, la filière d’études d’un étudiant ne semble pas être un indicateur significatif de son niveau de culture générale.

Évaluation du Niveau de Culture Générale des Étudiants

Unique Missing Pct. Mean SD Min Median Max Histogram
note 12 0 6.0 2.0 0.0 6.0 10.0
vrai_note 10 0 6.6 1.8 1.0 7.0 10.0
surestimation 12 0 0.6 1.8 -5.0 1.0 5.0
N %
cult1 l'Himalaya 127 61.1
la cordillère des Andes 75 36.1
le massif de l'Atlas 5 2.4
les Rocheuses 1 0.5
cult2 Angela Davis 7 3.4
Mae Jemison 3 1.4
Oprah Winfrey 4 1.9
Rosa Parks 194 93.3
cult3 1er siècle avant JC 75 36.1
3e siècle avant JC 66 31.7
5e siècle avant JC 47 22.6
7e siècle avant JC 20 9.6
cult4 Charles Darwin 181 87.0
Georges-Louis Leclerc de Buffon 9 4.3
Henry David Thoreau 11 5.3
Jean-Baptiste de Lamarck 7 3.4
cult5 amortissement 145 69.7
plue-value 22 10.6
provision 11 5.3
réévaluation d'actif 30 14.4
cult6 une actrice 31 14.9
une autrice 51 24.5
une couturière 31 14.9
une peintre 95 45.7
cult7 14 jours 12 5.8
21 jours 33 15.9
28 jours 140 67.3
7 jours 23 11.1
cult9 Adam Smith 150 72.1
John Maynard Keynes 22 10.6
Karl Marx 25 12.0
Paul Anthony Samuelson 11 5.3
cult10 Diderot 29 13.9
Molière 13 6.2
Rousseau 16 7.7
Voltaire 150 72.1

Commentaire

L’analyse des données recueillies dans notre enquête fournit des perspectives significatives sur le niveau de culture générale des étudiants interrogés. La moyenne des notes obtenues atteint 6.0, présentant une variabilité marquée illustrée par un écart-type de 2.0. En ce qui concerne des questions spécifiques, 61.1% des répondants ont correctement identifié l’Himalaya comme la plus vaste chaîne de montagnes, tandis que 69.7% ont bien assimilé la notion d’amortissement en finance. Des performances notables ont été enregistrées sur des questions emblématiques, telles que l’identification de Rosa Parks (93.3%), qui a refusé de céder sa place à un homme noir aux États-Unis en 1955, les 28 jours représentant la durée de rotation de la Lune (67.3%), et l’attribution de “la main invisible” à Adam Smith (72.1%).

Conclusion

Les questions portant sur la femme noire qui a refusé de céder sa place à un homme noir en 1955 aux États-Unis (cult2), sur le naturaliste qui a révolutionné la biologie avec son ouvrage “L’Origine des espèces” paru en 1859 (cult4) et sur la durée de rotation de la Lune (cult7) ont généré des taux élevés de réponses correctes. En revanche, les questions relatives à la plus vaste chaîne de montagnes (le massif de l’Atlas, Mae Jemison et les Rocheuses) ont obtenu des taux de réponses plus faibles. Les variations significatives dans les réponses soulignent la diversité des connaissances des étudiants en culture générale, offrant ainsi un aperçu détaillé de leurs performances sur chaque question spécifique.

Culture général selon le niveau d’étude

Commentaire

Les différences culturelles varient considérablement selon le niveau d’études. Les études du premier cycle montrent des similarités culturelles avec les autres niveaux, tandis que les études de L3 montrent une variance culturelle plus élevée.

La variation de la Culture Générale selon le Niveau d’Études suit une tendance décroissante. Ainsi, les étudiants en L3 ont une Culture Générale légèrement supérieure à celle des étudiants en L2 , qui ont à leur tour une Culture Générale légèrement supérieure à celle des étudiants en premier cycle.

Conclusion

La culture générale des étudiants résulte d’une interconnexion complexe de divers facteurs tels que le genre, le temps consacré aux études, le stade académique et la filière suivie. Toutefois, il est essentiel de souligner que chaque étudiant est une entité unique, et des généralisations excessives risquent de négliger la richesse des expériences et des perspectives au sein de la communauté étudiante. L’accent sur l’individualité reste primordial, et une approche nuancée s’impose pour appréhender pleinement la diversité des cultures étudiantes.

En résumé, la culture générale des étudiants émerge d’une combinaison délicate de paramètres, incluant le contenu des programmes d’études, le niveau académique, le style de vie et les choix personnels. Pour favoriser un environnement éducatif équilibré et stimulant, il est suggéré d’adapter les programmes éducatifs, de promouvoir l’auto-apprentissage et de sensibiliser à l’importance de la diversité culturelle. Ces initiatives contribueront à former des étudiants mieux informés et prêts à relever les défis de leur vie professionnelle et personnelle.

LS0tDQp0aXRsZTogIkxhIGN1bHR1cmUgZ8OpbsOpcmFsIGVzdCBsZSBqYXJkaW4gZGUgbOKAmWVzcHJpdCBvdSBjaGFxdWUgY29ubmFpc3NhbmNlIHBsYW50w6llIGZsZXVyaXQgZW4gc2FnZXNzZSINCmF1dGhvcjogIkJvdWdoYXppIE1lcmllbSBldCBCb3VkYW1vdXMgTHluYSINCmRhdGU6ICcyMDIzLTEyLTE4Jw0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgICBoaWdobGlnaHQ6IGthdGUNCiAgICB0aGVtZTogdW5pdGVkDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSANCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQoNCmBgYHtyIE9wdGlvbnMgcG91ciBsZXMgcHJvY2hhaW5zIGNodW5rcywgZWNobyA9IEZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBtZXNzYWdlID0gRkFMU0UsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFDQogICkNCmBgYA0KDQpgYGB7ciBMaXN0ZSBkZXMgcGFja2FnZX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShnZ3JpZGdlcykNCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShmb3JjYXRzKQ0KbGlicmFyeShtb2RlbHN1bW1hcnkpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShyY2FydG9jb2xvcikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KYGBgDQoNCmBgYHtyIFRow6htZSBjaG9pc2kgcG91ciBnZ3Bsb3QyfQ0KdGhlbWVfc2V0KHRoZW1lX21pbmltYWwoKSkgDQpgYGANCg0KYGBge3IgQmFzZSBkZSBkb25uw6llc30NCmRhdGEgPC0gcmVhZF9kZWxpbSgiZGF0YXNvbmRhZ2Uvc29uZGFnZV8yMDIzMTEwOS5jc3YiLGRlbGltID0gIjsiKQ0KYGBgDQoNCmBgYHtyIFJlbm9tbWUgY29sb25uZXN9DQpuZXdfY29sbmFtZXMgPC0gYygiYWdlIiwgImdlbnJlIiwgInRhaWxsZSIsICJhbm5lZV9ldHVkZSIsICJmaWxsaWVyZSIsICJwYXlzX25haXNzYW5jZSIsICJhbm5lZV9iYWMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lhbGl0ZV90ZXJtIiwgInR5cGVfYmFjIiwgImNob2l4X2xpY2VuY2UiLCAidHJhdmFpbF9zY29sYWlyZSIsICJ0cmFuc3BvcnQiLCAidGVtcHNfdHJhbnNwb3J0IiwgInRhYmFjIiwgImFsY29vbCIsICJzb2lyZWUiLCAicGhvYmllIiwgImpldXhfdmlkZW9zIiwgIm9zX3RlbGVwaG9uZSIsICJhZ2VfdGVsZXBob25lIiwgIm9zIiwgImFnZV9vcmRpbmF0ZXVyIiwgInN1cHBvcnRfbm90ZSIsICJtYXRlcmllbCIsInJlc2VhdV9wcmVmZXJlIiwgInRlbXBzX3Jlc2VhdXgiLCAidGVtcHNfdGVsZXBob25lIiwgInNvdXJjZV9pbmZvIiwgImN1bHQxIiwgImN1bHQyIiwiY3VsdDMiLCAiY3VsdDQiLCAiY3VsdDUiLCAiY3VsdDYiLCAiY3VsdDciLCAiY3VsdDgiLCAiY3VsdDkiLCAiY3VsdDEwIiwgInRyaWNoZSIsICJub3RlIikNCmNvbG5hbWVzKGRhdGEpIDwtIG5ld19jb2xuYW1lcw0KYGBgDQojIEludHJvZHVjdGlvbg0KDQpMb3JzIGRlIGxldXIgcGFyY291cnMgYWNhZMOpbWlxdWUsIGxlcyDDqXR1ZGlhbnRzIGV4cGxvcmVudCBsYSBjdWx0dXJlIGfDqW7DqXJhbGUsIHVuZSB2YXN0ZSDDqXRlbmR1ZSBkZSBjb25uYWlzc2FuY2VzIHRyYW5zY2VuZGFudCBsZXMgZGlzY2lwbGluZXMuIENldHRlIHRvaWxlIGRlIGZvbmQgaW50ZWxsZWN0dWVsbGUgZW5yaWNoaXQgbGV1cnMgcGVyc3BlY3RpdmVzLCBub3Vycml0IGxldXIgY3VyaW9zaXTDqSBldCBjb250cmlidWUgw6AgbGV1ciBkw6l2ZWxvcHBlbWVudCBhY2Fkw6ltaXF1ZSwgZm9ybWFudCBhaW5zaSBkZXMgaW5kaXZpZHVzIMOpY2xhaXLDqXMgZXQgZG90w6lzIGQndW5lIHZpc2lvbiDDqWxhcmdpZSBkdSBtb25kZS4NCg0KDQojIyBQcsOpc2VudGF0aW9uIGR1IHN1amV0IA0KDQpQb3VyIG5vdHJlIHByb2pldCBkZSBmaW4gZGUgc2VtZXN0cmUgbm91cyBhbGxvbnMgdGVudGVyIGTigJlhbmFseXNlciBjZXJ0YWluZSBjYXJhY3TDqXJpc3RpcXVlIGRlcyDDqXR1ZGlhbnRzIGRlIGzigJl1bml2ZXJzaXTDqSBkZSBUb3VycyBjb25jZXJuYW50IGxldXIgY3VsdHVyZSBnw6luw6lyYWxlIGRhbnMgY2UgY2FkcmUgZW4gZmFpdCByw6lmw6lyZW5jZSDDoCB1bmUgw6l0dWRlIHF1aSBhIMOpdMOpIG1lbsOpZSDDoCBs4oCZYXV0b21uZSAyMDIzLkNldHRlIMOpdHVkZSwgYmFzw6llIHN1ciB1biBzb25kYWdlIHLDqWFsaXPDqSBwYXIgKipNbWUgU2Nob2xsZXIgZXQgbm91cyoqLCBsZXMgw6l0dWRpYW50cyBkZSBMMyBkJ8OJY29ub21pZSDDoCBs4oCZW3VuaXZlcnNpdMOpIGRlIFRvdXJzXShodHRwczovL3d3dy51bml2LXRvdXJzLmZyLyksIGRhbnMgbGUgY2FkcmUgZGUgbm9zIGNvdXJzIGRlIGxvZ2ljaWVsICoqUjMqKi4gTm90cmUgw6l0dWRlIHNlIHBvcnRlIHN1ciBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZGVzIMOpdHVkaWFudHMsIHBhciBjb25zw6lxdWVudCBub3VzIGFsbG9ucyB0ZW50ZXIgZGUgcsOpcG9uZHJlIGF1eCBxdWVzdGlvbiBzdWl2YW50ZSA6DQoNCiogKlF1ZWxsZSBlc3QgbGEgcGVyY2VwdGlvbiAobml2ZWF1IGRlIGNvbmZpYW5jZSkgZGVzIHLDqXBvbmRhbnRzIHN1ciBsZXVyIGN1bHR1cmUgZ8OpbsOpcmFsZSBwYXIgZ2VucmU/Kg0KDQoqICpBIHF1ZWwgcXVlc3Rpb24gbGVzIHLDqXBvbmRhbnRzIG9udCBsZSBtaWV1eCByw6lwb25kdSA/bGUgbW9pbnMgYmllbiByw6lwb25kdT8qDQoNCiogKlkgYS10LWlsIHVuZSBjb3Jyw6lsYXRpb24gZW50cmUgbGUgdGVtcHMgZGUgdHJhdmFpbCBwZXJzb25uZWwgZXQgbGUgbml2ZWF1IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSA/Kg0KDQoqICpFeGlzdGUtdC1pbCBkZXMgZGlmZsOpcmVuY2VzIHNpZ25pZmljYXRpdmVzIGVuIHRlcm1lcyBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZW50cmUgbGVzIGZpbGnDqHJlcyBkJ8OpdHVkZXMgPyoNCg0KKiAqUXVlbCBlc3QgbGUgbml2ZWF1IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBkZXMgw6l0dWRpYW50cyA/Kg0KDQoqICpDb21tZW50IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSB2YXJpZS10LWVsbGUgZW4gZm9uY3Rpb24gZHUgbml2ZWF1IGQnw6l0dWRlcyA/Kg0KKiAqRXhpc3RlLXQtaWwgZGVzIGRpZmbDqXJlbmNlcyBlbnRyZSBsZXMgZ2VucmVzIGVuIGNlIHF1aSBjb25jZXJuZSBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgPyoNCg0KDQoNCiMjIFByw6lzZW50YXRpb24gZGVzIGRvbm7DqWVzIA0KDQpOb3VzIGRpc3Bvc29ucyBkZSAqKmByIG5jb2woZGF0YSlgKiogcXVlc3Rpb24gYXZlYyAqKmByIG5yb3coZGF0YSlgKiogZGUgcsOpcG9uZGFudHMsZGVzIMOpdHVkaWFudHMgZGUgTDEsTDIgZXQgTDMgZG9udCBs4oCZw6JnZSBlc3QgY29tcHJpcyBlbnRyZSAqKmByIG1pbihkYXRhJGFnZSlgICoqIGV0ICoqYHIgbWF4KGRhdGEkYWdlKWAqKiBhbnMsIGRhbnMgbGEgYmFzZSBkb25uw6llIHLDqWFsaXPDqWUgcGFyICoqTW1lIFNjaG9sbGVyKiogY29udGVuYW50IGxlcyByw6lwb25zZXMgZGVzIMOpdHVkaWFudHMgZGUgKips4oCZdW5pdmVyc2l0w6kgZGUgVG91cnMqKi4NCkxlcyBxdWVzdGlvbnMgYWJvcmRlbnQgZGl2ZXJzIHN1amV0cyBkb250IGxhICBjdWx0dXJlIGfDqW7DqXJhbGUsIG1haXMgbm91cyBhdm9ucyBkw6ljaWTDqSBkZSBub3VzIGZvY2FsaXNlciBzcMOpY2lmaXF1ZW1lbnQgc3VyIGNlbGxlcy1jaS4gVm9pY2kgdW4gZXhlbXBsZSBkZSBxdWVzdGlvbnMgcXVpIG5vdXMgb250IMOpdMOpIHBvc8OpZXMgOg0KDQorICpRdWVsbGUgZXN0IGxhIHBsdXMgbGFyZ2UgY2hhw65uZSBkZSBtb250YWduZSBkdSBtb25kZSA/Kg0KDQorICpRdWVsIGVzdCBsZSBub20gZGUgbGEgZmVtbWUgbm9pcmUgcXVpIGEgcmVmdXPDqSBkZSBjw6lkZXIgc2EgcGxhY2Ugw6AgdW4gaG9tbWUgYmxhbmMgZGFucyB1biBidXMgZW4gMTk1NSBhdXggw4l0YXRzLVVuaXMgPyoNCg0KKyAqQXUgY291cnMgZGUgcXVlbCBzacOoY2xlLCBDbMOpb3DDonRyZSwgYS10LWVsbGUgcsOpZ27DqSA/Kg0KDQorICpRdWVsIG5hdHVyYWxpc3RlIGEgcsOpdm9sdXRpb25uw6kgbGEgYmlvbG9naWUgYXZlYyBzb24gb3V2cmFnZSDigJxMJ09yaWdpbmUgZGVzIGVzcMOoY2Vz4oCdIHBhcnUgZW4gMTg1OSA/Kg0KKyAqw4AgcXVlbCBtb3QgY29ycmVzcG9uZCBsYSBkw6lmaW5pdGlvbiBzdWl2YW50ZSA6IHLDqXBhcnRpdGlvbiBkYW5zIGxlIHRlbXBzIGTigJl1bmUgY2hhcmdlIGZpbmFuY2nDqHJlIGNvcnJlc3BvbmRhbnQgYXUgcmVtcGxhY2VtZW50IGTigJl1biBiaWVuLA0KbWFjaGluZSwgYXBwYXJlaWwsIGV0Yy4/Kg0KDQorICpRdWkgZXN0IE5pa2kgZGUgU2FpbnQgUGhhbGxlID8qIA0KDQorICpDb21iaWVuIGRlIHRlbXBzIGR1cmUgbGEgcm90YXRpb24gY29tcGzDqHRlIGRlIGxhIEx1bmUgYXV0b3VyIGRlIGxhIFRlcnJlID8qDQoNCisgKkVuIHF1ZWxsZSBhbm7DqWUgZXN0IGTDqWZpbml0aXZlbWVudCBwcm9jbGFtw6llIGzigJlhYm9saXRpb24gZGUgbOKAmWVzY2xhdmFnZSBlbiBGcmFuY2UgPyoNCg0KKyAqUXVpIGEgaW52ZW50w6kgbCdleHByZXNzaW9uICJsYSBtYWluIGludmlzaWJsZSIgPyoNCg0KKyAqUXVlbCDDqWNyaXZhaW4gZXQgcGhpbG9zb3BoZSBmcmFuw6dhaXMgYSByYWNvbnTDqSBs4oCZaGlzdG9pcmUgZGUgQ2FuZGlkZSA/Kg0KDQorICpBdmV6LWJpZW4gam91w6kgbGUgamV1IGV0IHLDqXBvbmR1IHNhbnMgY29uc3VsdMOpIGRlIHNvdXJjZSBkJ2luZm9ybWF0aW9uID8qDQorICpWb3VzIHBlbnNleiBhdm9pciBjb21iaWVuIGRlIHLDqXBvbnNlcyBqdXN0ZSBzdXIgbGVzIDEwIHF1ZXN0aW9ucyA/ICgwIC0gMTApKg0KDQoNCiMgUGVyY2VwdGlvbiBkZSBsYSBDdWx0dXJlIEfDqW7DqXJhbGUgcGFyIEdlbnJlIA0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZHBseXIpDQoNCg0KcCA8LSBnZ3Bsb3QoZGF0YSwgYWVzKHggPSBnZW5yZSwgeSA9IG5vdGUsIGZpbGwgPSBnZW5yZSkpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJzdW1tYXJ5IiwgZnVuID0gIm1lYW4iLCBwb3NpdGlvbiA9ICJkb2RnZSIsIGNvbG9yID0gTkEpICsNCiAgZ2VvbV9jcm9zc2JhcihzdGF0ID0gInN1bW1hcnkiLCBmdW4gPSAibWVkaWFuIiwgcG9zaXRpb24gPSAiZG9kZ2UiLCB3aWR0aCA9IDAuNSwgZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gIiNDNzAwMzkiKSArDQogIHN0YXRfc3VtbWFyeShmdW4uZGF0YSA9ICJtZWFuX2NsX25vcm1hbCIsIGdlb20gPSAidGV4dCIsIGFlcyhsYWJlbCA9IHJvdW5kKC4ueS4uLCAyKSksIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjgpLCB2anVzdCA9IDEyLCBjb2xvciA9ICJibGFjayIpICsNCiAgbGFicygNCiAgICB4ID0gIkdlbnJlIiwgeSA9ICJNb3llbm5lIGRlIGxhIE5vdGUiDQogICkgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJNYXNjdWxpbiIgPSAiIzMxODJiZCIsICJGw6ltaW5pbiIgPSAicGluayIpLCBuYW1lID0gIkdlbnJlIikgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiTWFzY3VsaW4iID0gIiMzMTgyYmQiLCAiRsOpbWluaW4iID0gInBpbmsiKSwgbmFtZSA9ICJHZW5yZSIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoDQogICAgbGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IiwNCiAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJwYWxlZ29sZGVucm9kIiwgY29sb3IgPSBOQSksDQogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KSwNCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gMTUsIGhqdXN0ID0gMC41KSAgDQogICkNCmdncGxvdGx5KHApDQpgYGANCg0KKipDb21tZW50YWlyZSoqDQoNCipMZSBkaWFncmFtbWUgaWxsdXN0cmUgbGEgbW95ZW5uZSBldCBsYSBtw6lkaWFuZSBkZXMgw6l2YWx1YXRpb25zIGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBmb25jdGlvbiBkdSBnZW5yZSAoZsOpbWluaW4gZXQgbWFzY3VsaW4pLiBVbmUgb2JzZXJ2YXRpb24gbm90YWJsZSBlc3QgcXVlIGxlcyBob21tZXMgYWZmaWNoZW50IGfDqW7DqXJhbGVtZW50IHBsdXMgZGUgY29uZmlhbmNlIHF1ZSBsZXMgZmVtbWVzLiBFbiBtb3llbm5lLCBsZXMgaG9tbWVzIGVzdGltZW50IG9idGVuaXIgdW5lIG5vdGUgZGUgNiwyNi8xMCwgdGFuZGlzIHF1ZSBsZXMgZmVtbWVzIGVzdGltZW50IGF0dGVpbmRyZSB1bmUgbW95ZW5uZSBkZSA1LDQ3LioNCg0KKkxlIHNlZ21lbnQgcm91Z2UgcmVwcsOpc2VudGUgbGEgbcOpZGlhbmUsIHF1aSBzZSBzaXR1ZSDDoCA2IHBvdXIgbGVzIGRldXggZ3JvdXBlcyAoZsOpbWluaW4gZXQgbWFzY3VsaW4pLiBBaW5zaSwgYmllbiBxdWUgbGVzIGRldXggc2V4ZXMgYWllbnQgdW5lIG3DqWRpYW5lIMOpZ2FsZSwgb24gcGV1dCBjb25zdGF0ZXIgcXVlIGxlcyBmZW1tZXMgc2VtYmxlbnQgYXZvaXIgdW5lIG1veWVubmUgbMOpZ8OocmVtZW50IGluZsOpcmlldXJlIMOgIGNlbGxlIGRlcyBob21tZXMuKg0KDQoqKmNvbmNsdXNpb24qKg0KbGVzIGhvbW1lcyBzZW1ibGVudCBhdm9pciB1bmUgcGVyY2VwdGlvbiBkZSBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgcGx1cyDDqWxldsOpZSBxdWUgbGVzIGZlbW1lcy4qDQoNCg0KIyBBbmFseXNlIGRlcyBSw6lwb25zZXMgRXhjZXB0aW9ubmVsbGVzIGV0IE1vaW5zIFBlcmZvcm1hbnRlcyBkZXMgUGFydGljaXBhbnRzDQoNCg0KYGBge3J9DQpib25uZXNfcmVwb25zZXMgPC0gYygNCiAgImxhIGNvcmRpbGzDqHJlIGRlcyBBbmRlcyIsDQogICJSb3NhIFBhcmtzIiwNCiAgIjFlciBzacOoY2xlIGF2YW50IEpDIiwNCiAgIkNoYXJsZXMgRGFyd2luIiwNCiAgImFtb3J0aXNzZW1lbnQiLA0KICAidW5lIHBlaW50cmUiLA0KICAiMjggam91cnMiLA0KICAiMTg0OCIsDQogICJBZGFtIFNtaXRoIiwNCiAgIlZvbHRhaXJlIg0KKQ0KDQpjYWxjdWxlX25vdGUgPC0gZnVuY3Rpb24ocm93LCBib25uZXNfcmVwb25zZXMpIHsNCiAgbm90ZSA8LSBzdW0ocm93WyJjdWx0MSJdID09IGJvbm5lc19yZXBvbnNlc1sxXSwNCiAgICAgICAgICAgICAgIHJvd1siY3VsdDIiXSA9PSBib25uZXNfcmVwb25zZXNbMl0sDQogICAgICAgICAgICAgICByb3dbImN1bHQzIl0gPT0gYm9ubmVzX3JlcG9uc2VzWzNdLA0KICAgICAgICAgICAgICAgcm93WyJjdWx0NCJdID09IGJvbm5lc19yZXBvbnNlc1s0XSwNCiAgICAgICAgICAgICAgIHJvd1siY3VsdDUiXSA9PSBib25uZXNfcmVwb25zZXNbNV0sDQogICAgICAgICAgICAgICByb3dbImN1bHQ2Il0gPT0gYm9ubmVzX3JlcG9uc2VzWzZdLA0KICAgICAgICAgICAgICAgcm93WyJjdWx0NyJdID09IGJvbm5lc19yZXBvbnNlc1s3XSwNCiAgICAgICAgICAgICAgIHJvd1siY3VsdDgiXSA9PSBib25uZXNfcmVwb25zZXNbOF0sDQogICAgICAgICAgICAgICByb3dbImN1bHQ5Il0gPT0gYm9ubmVzX3JlcG9uc2VzWzldLA0KICAgICAgICAgICAgICAgcm93WyJjdWx0MTAiXSA9PSBib25uZXNfcmVwb25zZXNbMTBdKQ0KICByZXR1cm4obm90ZSkNCn0NCg0KZGF0YSR2cmFpX25vdGUgPC0gYXBwbHkoZGF0YSwgMSwgY2FsY3VsZV9ub3RlLCBib25uZXNfcmVwb25zZXMgPSBib25uZXNfcmVwb25zZXMpDQpgYGANCg0KYGBge3J9DQpxdWVzdGlvbnNfdGV4dHVlbGxlcyA8LSBjKA0KICAiUXVlbGxlIGVzdCBsYSBwbHVzIGxhcmdlIGNoYcOubmUgZGUgbW9udGFnbmUgZHUgbW9uZGUgPyIsDQogICJRdWVsIGVzdCBsZSBub20gZGUgbGEgZmVtbWUgbm9pcmUgcXVpIGEgcmVmdXPDqSBkZSBjw6lkZXIgc2EgcGxhY2Ugw6AgdW4gaG9tbWUgYmxhbmMgZGFucyB1biBidXMgZW4gMTk1NSBhdXggw4l0YXRzLVVuaXMgPyIsDQogICJBdSBjb3VycyBkZSBxdWVsIHNpw6hjbGUsIENsw6lvcMOidHJlLCBhLXQtZWxsZSByw6lnbsOpID8iLA0KICAiUXVlbCBuYXR1cmFsaXN0ZSBhIHLDqXZvbHV0aW9ubsOpIGxhIGJpb2xvZ2llIGF2ZWMgc29uIG91dnJhZ2Ug4oCcTCdPcmlnaW5lIGRlcyBlc3DDqGNlc+KAnSBwYXJ1IGVuIDE4NTkgPyIsDQogICLDgCBxdWVsIG1vdCBjb3JyZXNwb25kIGxhIGTDqWZpbml0aW9uIHN1aXZhbnRlIDogcsOpcGFydGl0aW9uIGRhbnMgbGUgdGVtcHMgZOKAmXVuZSBjaGFyZ2UgZmluYW5jacOocmUgY29ycmVzcG9uZGFudCBhdSByZW1wbGFjZW1lbnQgZOKAmXVuIGJpZW4sIG1hY2hpbmUsIGFwcGFyZWlsLCBldGMuID8iLA0KICAiUXVpIGVzdCBOaWtpIGRlIFNhaW50IFBoYWxsZSA/IiwNCiAgIkNvbWJpZW4gZGUgdGVtcHMgZHVyZSBsYSByb3RhdGlvbiBjb21wbMOodGUgZGUgbGEgTHVuZSBhdXRvdXIgZGUgbGEgVGVycmUgPyIsDQogICJFbiBxdWVsbGUgYW5uw6llIGVzdCBkw6lmaW5pdGl2ZW1lbnQgcHJvY2xhbcOpZSBs4oCZYWJvbGl0aW9uIGRlIGzigJllc2NsYXZhZ2UgZW4gRnJhbmNlID8iLA0KICAiUXVpIGEgaW52ZW50w6kgbCdleHByZXNzaW9uICdsYSBtYWluIGludmlzaWJsZScgPyIsDQogICJRdWVsIMOpY3JpdmFpbiBldCBwaGlsb3NvcGhlIGZyYW7Dp2FpcyBhIHJhY29udMOpIGzigJloaXN0b2lyZSBkZSBDYW5kaWRlID8iDQopDQoNCmJvbm5lc19yZXBvbnNlcyA8LSBjKCJsYSBjb3JkaWxsw6hyZSBkZXMgQW5kZXMiLCAiUm9zYSBQYXJrcyIsICIxZXIgc2nDqGNsZSBhdmFudCBKQyIsICJDaGFybGVzIERhcndpbiIsICJhbW9ydGlzc2VtZW50IiwgInVuZSBwZWludHJlIiwgIjI4IGpvdXJzIiwgIjE4NDgiLCAiQWRhbSBTbWl0aCIsICJWb2x0YWlyZSIpDQoNCnJlc3VsdGF0cyA8LSBzYXBwbHkoc2VxX2Fsb25nKGJvbm5lc19yZXBvbnNlcyksIGZ1bmN0aW9uKGkpIHsNCiAgbWVhbihkYXRhW1twYXN0ZTAoImN1bHQiLCBpKV1dID09IGJvbm5lc19yZXBvbnNlc1tpXSwgbmEucm0gPSBUUlVFKSAqIDEwMA0KfSkNCg0KDQp0YXV4X2Jvbm5lc19yZXBvbnNlcyA8LSBkYXRhLmZyYW1lKA0KICBRdWVzdGlvbnMgPSBxdWVzdGlvbnNfdGV4dHVlbGxlcywNCiAgUG91cmNlbnRhZ2UgPSByZXN1bHRhdHMNCikNCg0KDQp0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSA8LSBzcHJpbnRmKCIlLjJmJSUiLCB0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkNCg0KDQptZWlsbGV1cl90YXV4IDwtIG1heCh0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkNCm1vaW5zX2Jvbl90YXV4IDwtIG1pbih0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkNCg0KDQprYWJsZSh0YXV4X2Jvbm5lc19yZXBvbnNlcywgImh0bWwiLCBhbGlnbiA9ICdjJywgY29sLm5hbWVzID0gYygiUXVlc3Rpb25zIiwgIlBvdXJjZW50YWdlIGRlIGJvbm5lcyByw6lwb25zZXMiKSkgJT4lDQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIikpICU+JQ0KICByb3dfc3BlYyh3aGljaCh0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSA9PSBtZWlsbGV1cl90YXV4KSwgYmFja2dyb3VuZCA9ICJsaWdodGdyZWVuIikgJT4lDQogIHJvd19zcGVjKHdoaWNoKHRhdXhfYm9ubmVzX3JlcG9uc2VzJFBvdXJjZW50YWdlID09IG1vaW5zX2Jvbl90YXV4KSwgYmFja2dyb3VuZCA9ICIjQzcwMDM5IikgJT4lDQogIGFkZF9oZWFkZXJfYWJvdmUoYygiVGF1eCBkZSBCb25uZXMgUsOpcG9uc2VzIHBhciBRdWVzdGlvbiIgPSAyKSkNCg0KDQoNCnRhdXhfYm9ubmVzX3JlcG9uc2VzJFBvdXJjZW50YWdlX251bSA8LSBhcy5udW1lcmljKHN1YigiJSIsICIiLCB0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkpDQoNCg0KdGF1eF9ib25uZXNfcmVwb25zZXMkUG91cmNlbnRhZ2VfbnVtIDwtIGFzLm51bWVyaWMoc3ViKCIlIiwgIiIsIHRhdXhfYm9ubmVzX3JlcG9uc2VzJFBvdXJjZW50YWdlKSkNCg0KDQoNCm5vbWJyZV9xdWVzdGlvbnMgPC0gbnJvdyh0YXV4X2Jvbm5lc19yZXBvbnNlcykNCnRhdXhfYm9ubmVzX3JlcG9uc2VzJFF1ZXN0aW9ucyA8LSBwYXN0ZSgiUSIsIHNlcV9sZW4obm9tYnJlX3F1ZXN0aW9ucyksIHNlcCA9ICIiKQ0KICANCmBgYA0KDQoqKkNvbW1lbnRhaXJlKioNCg0KKkwnYW5hbHlzZSBkZXMgcGVyZm9ybWFuY2VzIGRlcyBwYXJ0aWNpcGFudHMgcsOpdsOobGUgcXVlIDkzLjI3ICUgZCdlbnRyZSBldXggb250IHLDqXBvbmR1IGNvcnJlY3RlbWVudCDDoCBsYSBxdWVzdGlvbiAyLiBFbiByZXZhbmNoZSwgc2V1bGVtZW50IDM2LjA2ICUgb250IGNvcnJlY3RlbWVudCByw6lwb25kdSDDoCBsYSBxdWVzdGlvbiAxLCBzdWdnw6lyYW50IHVuZSBkaWZmaWN1bHTDqSBhY2NydWUgcG91ciBjZXR0ZSBkZXJuacOocmUuKg0KDQoqTGEgbWFqb3JpdMOpIGRlcyBwYXJ0aWNpcGFudHMgKDc4Ljg1ICUpIG9udCByw6l1c3NpIMOgIHLDqXBvbmRyZSBjb3JyZWN0ZW1lbnQgw6AgbGEgcXVlc3Rpb24gNS4gTm90b25zIGNlcGVuZGFudCBxdWUgc2V1bHMgMzIuNDYgJSBvbnQgY29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIGxhIHF1ZXN0aW9uIDQsIHNvdWxpZ25hbnQgc2EgY29tcGxleGl0w6kgcG91ciBldXguKg0KDQoqSWwgZXN0IMOpZ2FsZW1lbnQgcmVtYXJxdWFibGUgcXVlIDY3LjMxICUgZGVzIHBhcnRpY2lwYW50cyBvbnQgY29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIGxhIHF1ZXN0aW9uIDMuIEJpZW4gcXVlIGNldHRlIHF1ZXN0aW9uIHNvaXQgcmVsYXRpdmVtZW50IGRpZmZpY2lsZSwgbGEgcGx1cGFydCBkZXMgcGFydGljaXBhbnRzIG9udCBwdSB5IHLDqXBvbmRyZSBjb3JyZWN0ZW1lbnQuKg0KDQoqQ29uY2VybmFudCBsZXMgcG9pbnRzIGZhaWJsZXMgZGVzIHBhcnRpY2lwYW50cywgbGEgcGx1cGFydCBvbnQgw6ljaG91w6kgw6AgcsOpcG9uZHJlIGNvcnJlY3RlbWVudCDDoCBsYSBxdWVzdGlvbiAxLCBwb3J0YW50IHN1ciBsYSBjaGHDrm5lIGRlIG1vbnRhZ25lIGxhIHBsdXMgbG9uZ3VlIGR1IG1vbmRlLiBNYWxncsOpIGRlcyByw6lwb25zZXMgaW50w6lyZXNzYW50ZXMsIHNldWxlbWVudCAzMi40NiAlIG9udCByw6lwb25kdSBjb3JyZWN0ZW1lbnQuKg0KDQoqRGUgcGx1cywgc2V1bHMgNDUuNjcgJSBkZXMgcGFydGljaXBhbnRzIG9udCByw6lwb25kdSBjb3JyZWN0ZW1lbnQgw6AgbGEgcXVlc3Rpb24gNCwgY2VudHLDqWUgc3VyIGxhIHLDqXBhcnRpdGlvbiBmaW5hbmNpw6hyZSBkYW5zIGxlIHRlbXBzLCBpbmRpcXVhbnQgc2EgZGlmZmljdWx0w6kgcG91ciBsZXMgcGFydGljaXBhbnRzLioNCg0KDQojIyBBbmFseXNlIGRlcyBQZXJmb3JtYW5jZXMgcGFyIFF1ZXN0aW9uIDogDQoNCmBgYHtyfQ0KIyBDcmVhdGUgdGhlIHBsb3QgYW5kIGFzc2lnbiBpdCB0byBwDQpwIDwtIGdncGxvdCh0YXV4X2Jvbm5lc19yZXBvbnNlcywgYWVzKHggPSBmY3RfcmVvcmRlcihRdWVzdGlvbnMsIFBvdXJjZW50YWdlX251bSksIHkgPSBQb3VyY2VudGFnZV9udW0sIGZpbGwgPSBRdWVzdGlvbnMsdGV4dCA9IHBhc3RlKCIgUXVlc3Rpb25zOiIsIFF1ZXN0aW9ucywgIjxicj4gUG91cmNlbnRhZ2VfbnVtIDoiLCAgICAgIFBvdXJjZW50YWdlX251bSkpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgY29vcmRfZmxpcCgpICsgDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiR3JlZW5zIiwgZ3VpZGUgPSAibm9uZSIpICsgIyBVc2UgYSBkaXNjcmV0ZSBjb2xvciBwYWxldHRlDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpICsNCiAgbGFicygNCiAgICB4ID0gIlF1ZXN0aW9ucyIsDQogICAgeSA9ICJQb3VyY2VudGFnZSBkZSBib25uZXMgcsOpcG9uc2VzIg0KICApDQoNCiMgQ29udmVydCB0aGUgcGxvdCB0byBhIFBsb3RseSBpbnRlcmFjdGl2ZSBwbG90DQpnZ3Bsb3RseShwLHRvb2x0aXAgPSAidGV4dCIgKQ0KDQoNCmBgYA0KDQoqKkNvbW1lbnRhaXJlKioNCg0KKkxlcyBxdWVzdGlvbnMgZGV1eCAoOTMuMjclKSwgcXVhdHJlICg4Ny4wMiUpLCBldCBodWl0ICg3OC44NSUpIGFmZmljaGVudCBsZXMgcG91cmNlbnRhZ2VzIGRlIGJvbm5lcyByw6lwb25zZXMgbGVzIHBsdXMgw6lsZXbDqXMgcGFyIHJhcHBvcnQgYXV4IGF1dHJlcyBxdWVzdGlvbnMuKg0KDQoNCiMgQW5hbHlzZSBsZVRlbXBzIGRlIFRyYXZhaWwgUGVyc29ubmVsIGV0IGxlIE5pdmVhdSBkZSBDdWx0dXJlIEfDqW7DqXJhbGUgDQoNCg0KYGBge3J9DQpkYXRhX2NsZWFuIDwtIGRhdGEgJT4lDQogIGZpbHRlcih0cmF2YWlsX3Njb2xhaXJlID4gMCAmIHRyYXZhaWxfc2NvbGFpcmUgPD0gNjApDQoNCmcgPC0gZ2dwbG90KGRhdGFfY2xlYW4sIGFlcyh4ID0gdHJhdmFpbF9zY29sYWlyZSwgeSA9IHZyYWlfbm90ZSwgY29sb3IgPSB2cmFpX25vdGUpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGxhYnMoDQogICAgeCA9ICJUZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCAoaGV1cmVzL3NlbWFpbmUpIiwNCiAgICB5ID0gIk5pdmVhdSBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgKG5vdGUgc3VyIDEwKSIsDQogICAgY29sb3IgPSAiTml2ZWF1IGRlIGN1bHR1cmVcbmfDqW7DqXJhbGUgKHN1ciAxMCkiICANCiAgKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHNjYWxlX2NvbG9yX2dyYWRpZW50KGxvdyA9ICIjQzcwMDM5IiwgaGlnaCA9ICJsaWdodGdyZWVuIikgKw0KICB0aGVtZSgNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgIA0KICAgIGxlZ2VuZC50aXRsZS5hbGlnbiA9IDAuNSwgICANCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpIA0KICApICsNCiAgYW5ub3RhdGUoInRleHQiLCB4ID0gSW5mLCB5ID0gSW5mLCBsYWJlbCA9ICJDaGFxdWUgcG9pbnQgcmVwcsOpc2VudGUgdW4gw6l0dWRpYW50LlxuTGEgY291bGV1ciBpbmRpcXVlIHNvbiBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlLiIsIGhqdXN0ID0gMS4xLCB2anVzdCA9IDEuMSwgc2l6ZSA9IDMpDQpnZ3Bsb3RseShnKQ0KYGBgDQoNCioqY29tbWVudGFpdHJlKioNCg0KKklsIHNlbWJsZSBxdWUgbGVzIGRvbm7DqWVzIG5lIG1vbnRyZW50IHBhcyBkZSBjb3Jyw6lsYXRpb24gc2lnbmlmaWNhdGl2ZSBlbnRyZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBldCBsZSBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIGNoZXogbGVzIMOpdHVkaWFudHMuIExlcyBwb2ludHMgc2VtYmxlbnQgw6p0cmUgZGlzcGVyc8OpcyBkYW5zIGwnZXNwYWNlLCBjZSBxdWkgaW5kaXF1ZSBxdSdpbCBuJ3kgYSBwYXMgZGUgdGVuZGFuY2Ugb3UgZGUgcmVsYXRpb24gY2xhaXJlIGVudHJlIGxlcyBkZXV4IHZhcmlhYmxlcy5JbCBlc3Qgw6lnYWxlbWVudCBpbnTDqXJlc3NhbnQgZGUgcmVtYXJxdWVyIHF1ZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBuJ2VzdCBwYXMgZGlyZWN0ZW1lbnQgbGnDqSBhdSBuaXZlYXUgZGUgbGEgY3VsdHVyZSBnw6luw6lyYWxlLiBCaWVuIHF1ZSBsYSByZWxhdGlvbiBlbnRyZSBsZXMgZGV1eCB2YXJpYWJsZXMgc29pdCBtb2lucyDDqXZpZGVudGUsIGNlbGEgcG91cnJhaXQgw6p0cmUgZMO7IGF1IGZhaXQgcXVlIGxlcyBib25uZXMgcsOpcG9uc2VzIG5lIHJlZmzDqHRlbnQgcGFzIG7DqWNlc3NhaXJlbWVudCBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBkZXMgcGFydGljaXBhbnRzLioNCg0KIyMgVGVzdCBQZWFyc29uIA0KDQpgYGB7cn0NCmNvcl90ZXN0IDwtIGNvci50ZXN0KGRhdGFfY2xlYW4kdHJhdmFpbF9zY29sYWlyZSwgZGF0YV9jbGVhbiR2cmFpX25vdGUsIG1ldGhvZCA9ICJwZWFyc29uIikNCmNvcl90ZXN0IA0KYGBgDQoNCioqQ29tbWVudGFpcmU6KioNCg0KKkxlIGNvZWZmaWNpZW50IGRlIGNvcnLDqWxhdGlvbiBvYnNlcnbDqSBlbnRyZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBldCBsZSBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIGVzdCBkZSAwLjAyODQyODQ0LCBpbmRpcXVhbnQgdW5lIGNvcnLDqWxhdGlvbiB0csOocyBmYWlibGUsIHZvaXJlIGluZXhpc3RhbnRlIHN1ciBsZSBwbGFuIGxpbsOpYWlyZS4gTGEgcC12YWx1ZSBhc3NvY2nDqWUgw6AgY2V0dGUgY29ycsOpbGF0aW9uIGVzdCBkZSAwLjY5MTcsIGTDqXBhc3NhbnQgbGFyZ2VtZW50IGxlIHNldWlsIGRlIHNpZ25pZmljYXRpdml0w6kgY29udmVudGlvbm5lbCBkZSAwLjA1LiBEZSBwbHVzLCBsJ2ludGVydmFsbGUgZGUgY29uZmlhbmNlIMOgIDk1JSBwb3VyIGxlIGNvZWZmaWNpZW50IGRlIGNvcnLDqWxhdGlvbiB2YXJpZSBkZSAtMC4xMTE4MTE2IMOgIDAuMTY3NTU4Mi4gQ2VzIHLDqXN1bHRhdHMgc3VnZ8OocmVudCBxdSdpbCBuJ3kgYSBwYXMgZGUgcmVsYXRpb24gc2lnbmlmaWNhdGl2ZSBlbnRyZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBldCBsZSBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIGRhbnMgbm90cmUgw6ljaGFudGlsbG9uLioNCg0KKipDb25jbHVzaW9uIDoqKg0KDQoqTGVzIHLDqXN1bHRhdHMgZHUgdGVzdCBkZSBjb3Jyw6lsYXRpb24gZGUgUGVhcnNvbiBzdWdnw6hyZW50IHF1J2lsIG4neSBhIHBhcyBkZSByZWxhdGlvbiBzaWduaWZpY2F0aXZlIGVudHJlIGxlIHRlbXBzIGRlIHRyYXZhaWwgcGVyc29ubmVsIGV0IGxlIG5pdmVhdSBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZGFucyBjZXQgw6ljaGFudGlsbG9uIGRlIGRvbm7DqWVzLioNCg0KDQoNCiMgQW5hbHlzZSBkZXMgRGlmZsOpcmVuY2VzIGRlIE5pdmVhdSBkZSBDdWx0dXJlIEfDqW7DqXJhbGUNCg0KDQpgYGB7cn0NCmdncGxvdChkYXRhLCBhZXMoeCA9IGZpbGxpZXJlLCB5ID0gdnJhaV9ub3RlLCBmaWxsID0gZmlsbGllcmUpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiQXV0cmUiID0gImxpZ2h0Ymx1ZSIsICJHZXN0aW9uIiA9ICJsaWdodGdyZWVuIiwgIsOJY29ub21pZSIgPSAiI0M3MDAzOSIpKSArDQogIGxhYnMoDQogICAgeCA9ICJGaWxpw6hyZSIsDQogICAgeSA9ICJOaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIChub3RlIHN1ciAxMCkiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIGhqdXN0ID0gMC41LCBzaXplID0gMTUpLA0KICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIg0KICApICsNCiAgYW5ub3RhdGUoInRleHQiLCB4ID0gSW5mLCB5ID0gSW5mLCBsYWJlbCA9ICJMZXMgYm/DrnRlcyDDoCBtb3VzdGFjaGVzIG1vbnRyZW50IGxhIGRpc3RyaWJ1dGlvblxuZGVzIG5vdGVzIHBhciBmaWxpw6hyZSwgaW5kaXF1YW50IGxlcyBtw6lkaWFuZXMsXG5sZXMgcXVhcnRpbGVzIGV0IGxlcyB2YWxldXJzIGFiZXJyYW50ZXMuIiwgaGp1c3QgPSAxLjEsIHZqdXN0ID0gMS4xLCBzaXplID0gMykgKw0KdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpDQpgYGANCg0KKipDb21tZW50YWlyZSoqDQoNCipjZSBncmFwaGUgZm91cm5pdCB1biBhcGVyw6d1IGRlcyBuaXZlYXV4IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBkYW5zIGxlcyBkaWZmw6lyZW50ZXMgZmlsacOocmVzIGQnw6l0dWRlcyBldCBtZXQgZW4gw6l2aWRlbmNlIGxlcyBzcMOpY2lmaWNpdMOpcyBkZSBjaGFxdWUgZmlsacOocmUgZW4gbWF0acOocmUgZGUgY3VsdHVyZSBnw6luw6lyYWxlLkNldHRlIGluZm9ybWF0aW9uIGVzdCBwYXJ0aWN1bGnDqHJlbWVudCB1dGlsZSBwb3VyIGxlcyBkw6ljaWRldXJzLCBjYXIgZWxsZSBwZXJtZXQgZGUgbWlldXggY29tcHJlbmRyZSBsZXMgc3DDqWNpZmljaXTDqXMgZGUgY2hhcXVlIGZpbGnDqHJlIGV0IGQnYWRhcHRlciBsZXMgcHJvZ3JhbW1lcyBldCBsZXMgcmVzc291cmNlcyDDqWR1Y2F0aXZlcyBlbiBjb25zw6lxdWVuY2UuKg0KDQojIyBUZXN0IGRlIEtydXNrYWwtV2FsbGlzDQoNCmBgYHtyfQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShrbml0cikNCmlmIChzaGFwaXJvLnRlc3QoZGF0YSR2cmFpX25vdGUpJHAudmFsdWUgPiAwLjA1ICYmIGJhcnRsZXR0LnRlc3QodnJhaV9ub3RlIH4gZmlsbGllcmUsIGRhdGEgPSBkYXRhKSRwLnZhbHVlID4gMC4wNSkgew0KICBhbm92YV9yZXN1bHQgPC0gYW92KHZyYWlfbm90ZSB+IGZpbGxpZXJlLCBkYXRhID0gZGF0YSkNCiAgcHJpbnQoc3VtbWFyeShhbm92YV9yZXN1bHQpKSANCn0gZWxzZSB7DQogIGtydXNrYWxfcmVzdWx0IDwtIGtydXNrYWwudGVzdCh2cmFpX25vdGUgfiBmaWxsaWVyZSwgZGF0YSA9IGRhdGEpDQogIHByaW50KGtydXNrYWxfcmVzdWx0KQ0KfSANCg0KYGBgDQoNCioqQ29tbWVudGFpcmUgOioqDQoNCg0KKkxhIHZhbGV1ciBkdSB0ZXN0IGR1IGNoaS1jYXJyw6kgZGUgS3J1c2thbC1XYWxsaXMgZXN0IGRlIDEuMzk1OSwgcmVmbMOpdGFudCBsYSBtZXN1cmUgZGUgbGEgZGlmZsOpcmVuY2UgZ2xvYmFsZSBlbnRyZSBsZXMgZ3JvdXBlcyBkZSBmaWxpw6hyZXMuIExhIHAtdmFsdWUgYXNzb2Npw6llIMOgIGNlIHRlc3QgZXN0IGRlIDAuNDk3NiwgZMOpcGFzc2FudCBsZSBzZXVpbCBzdGFuZGFyZCBkZSBzaWduaWZpY2F0aXZpdMOpIGRlIDAuMDUuIENlcyByw6lzdWx0YXRzIGluZGlxdWVudCBxdSdpbCBuJ3kgYSBwYXMgZGUgcHJldXZlIHN0YXRpc3RpcXVlbWVudCBzaWduaWZpY2F0aXZlIHBvdXIgYWZmaXJtZXIgcXVlIGxlcyB2YXJpYXRpb25zIG9ic2VydsOpZXMgZGFucyBsZXMgbml2ZWF1eCBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZW50cmUgbGVzIGZpbGnDqHJlcyBzb250IGF1dHJlIGNob3NlIHF1ZSBsZSBmcnVpdCBkdSBoYXNhcmQuKg0KDQoqRW4gcsOpc3Vtw6ksIGxlcyBjb25jbHVzaW9ucyBkdSB0ZXN0IGRlIEtydXNrYWwtV2FsbGlzIHN1Z2fDqHJlbnQgcXUnYXVjdW5lIGRpZmbDqXJlbmNlIHNpZ25pZmljYXRpdmUgbidlc3Qgb2JzZXJ2w6llIGVuIHRlcm1lcyBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZW50cmUgbGVzIMOpdHVkaWFudHMgZGVzIGRpdmVyc2VzIGZpbGnDqHJlcyBkJ8OpdHVkZXMgZGFucyBjZXQgw6ljaGFudGlsbG9uLiBBdXRyZW1lbnQgZGl0LCBzZWxvbiBjZXMgZG9ubsOpZXMsIGxhIGZpbGnDqHJlIGQnw6l0dWRlcyBkJ3VuIMOpdHVkaWFudCBuZSBzZW1ibGUgcGFzIMOqdHJlIHVuIGluZGljYXRldXIgc2lnbmlmaWNhdGlmIGRlIHNvbiBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlLioNCg0KDQojIMOJdmFsdWF0aW9uIGR1IE5pdmVhdSBkZSBDdWx0dXJlIEfDqW7DqXJhbGUgZGVzIMOJdHVkaWFudHMgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KG1vZGVsc3VtbWFyeSkNCmBgYA0KDQpgYGB7cn0NCmRhdGEkc3VyZXN0aW1hdGlvbjwtZGF0YSR2cmFpX25vdGUtZGF0YSRub3RlIA0KcXVhbnRpX3ZhciA8LSBjKDQwLDQxLDQyKSANCnF1YWxpX3ZhciA8LSBjKDI5OjM4KSANCmBgYA0KDQpgYGB7cn0NCmRhdGFzdW1tYXJ5X3NraW0oZGF0YVssIHF1YW50aV92YXJdKSANCmRhdGFzdW1tYXJ5X3NraW0oZGF0YVsscXVhbGlfdmFyXSwgDQogICAgICAgICAgICAgICAgIHR5cGUgPSAiY2F0ZWdvcmljYWwiKQ0KYGBgDQoNCioqQ29tbWVudGFpcmUqKg0KDQoqTCdhbmFseXNlIGRlcyBkb25uw6llcyByZWN1ZWlsbGllcyBkYW5zIG5vdHJlIGVucXXDqnRlIGZvdXJuaXQgZGVzIHBlcnNwZWN0aXZlcyBzaWduaWZpY2F0aXZlcyBzdXIgbGUgbml2ZWF1IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBkZXMgw6l0dWRpYW50cyBpbnRlcnJvZ8Opcy4gTGEgbW95ZW5uZSBkZXMgbm90ZXMgb2J0ZW51ZXMgYXR0ZWludCA2LjAsIHByw6lzZW50YW50IHVuZSB2YXJpYWJpbGl0w6kgbWFycXXDqWUgaWxsdXN0csOpZSBwYXIgdW4gw6ljYXJ0LXR5cGUgZGUgMi4wLiBFbiBjZSBxdWkgY29uY2VybmUgZGVzIHF1ZXN0aW9ucyBzcMOpY2lmaXF1ZXMsIDYxLjElIGRlcyByw6lwb25kYW50cyBvbnQgY29ycmVjdGVtZW50IGlkZW50aWZpw6kgbCdIaW1hbGF5YSBjb21tZSBsYSBwbHVzIHZhc3RlIGNoYcOubmUgZGUgbW9udGFnbmVzLCB0YW5kaXMgcXVlIDY5LjclIG9udCBiaWVuIGFzc2ltaWzDqSBsYSBub3Rpb24gZCdhbW9ydGlzc2VtZW50IGVuIGZpbmFuY2UuIERlcyBwZXJmb3JtYW5jZXMgbm90YWJsZXMgb250IMOpdMOpIGVucmVnaXN0csOpZXMgc3VyIGRlcyBxdWVzdGlvbnMgZW1ibMOpbWF0aXF1ZXMsIHRlbGxlcyBxdWUgbCdpZGVudGlmaWNhdGlvbiBkZSBSb3NhIFBhcmtzICg5My4zJSksIHF1aSBhIHJlZnVzw6kgZGUgY8OpZGVyIHNhIHBsYWNlIMOgIHVuIGhvbW1lIG5vaXIgYXV4IMOJdGF0cy1VbmlzIGVuIDE5NTUsIGxlcyAyOCBqb3VycyByZXByw6lzZW50YW50IGxhIGR1csOpZSBkZSByb3RhdGlvbiBkZSBsYSBMdW5lICg2Ny4zJSksIGV0IGwnYXR0cmlidXRpb24gZGUgImxhIG1haW4gaW52aXNpYmxlIiDDoCBBZGFtIFNtaXRoICg3Mi4xJSkuKg0KDQoqKkNvbmNsdXNpb24qKg0KDQoqTGVzIHF1ZXN0aW9ucyBwb3J0YW50IHN1ciBsYSBmZW1tZSBub2lyZSBxdWkgYSByZWZ1c8OpIGRlIGPDqWRlciBzYSBwbGFjZSDDoCB1biBob21tZSBub2lyIGVuIDE5NTUgYXV4IMOJdGF0cy1VbmlzIChjdWx0MiksIHN1ciBsZSBuYXR1cmFsaXN0ZSBxdWkgYSByw6l2b2x1dGlvbm7DqSBsYSBiaW9sb2dpZSBhdmVjIHNvbiBvdXZyYWdlICJMJ09yaWdpbmUgZGVzIGVzcMOoY2VzIiBwYXJ1IGVuIDE4NTkgKGN1bHQ0KSBldCBzdXIgbGEgZHVyw6llIGRlIHJvdGF0aW9uIGRlIGxhIEx1bmUgKGN1bHQ3KSBvbnQgZ8OpbsOpcsOpIGRlcyB0YXV4IMOpbGV2w6lzIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMuIEVuIHJldmFuY2hlLCBsZXMgcXVlc3Rpb25zIHJlbGF0aXZlcyDDoCBsYSBwbHVzIHZhc3RlIGNoYcOubmUgZGUgbW9udGFnbmVzIChsZSBtYXNzaWYgZGUgbCdBdGxhcywgTWFlIEplbWlzb24gZXQgbGVzIFJvY2hldXNlcykgb250IG9idGVudSBkZXMgdGF1eCBkZSByw6lwb25zZXMgcGx1cyBmYWlibGVzLiBMZXMgdmFyaWF0aW9ucyBzaWduaWZpY2F0aXZlcyBkYW5zIGxlcyByw6lwb25zZXMgc291bGlnbmVudCBsYSBkaXZlcnNpdMOpIGRlcyBjb25uYWlzc2FuY2VzIGRlcyDDqXR1ZGlhbnRzIGVuIGN1bHR1cmUgZ8OpbsOpcmFsZSwgb2ZmcmFudCBhaW5zaSB1biBhcGVyw6d1IGTDqXRhaWxsw6kgZGUgbGV1cnMgcGVyZm9ybWFuY2VzIHN1ciBjaGFxdWUgcXVlc3Rpb24gc3DDqWNpZmlxdWUuKg0KDQojIEN1bHR1cmUgZ8OpbsOpcmFsIHNlbG9uIGxlIG5pdmVhdSBkJ8OpdHVkZQ0KDQpgYGB7cn0NCnAgIDwtIGdncGxvdChkYXRhLCBhZXMoeCA9IHZyYWlfbm90ZSwgZmlsbCA9IGFubmVlX2V0dWRlKSkgKw0KICBnZW9tX2RlbnNpdHkoYWxwaGEgPSAwLjUpICsNCiAgbGFicygNCiAgICB4ID0gIk5pdmVhdSBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgKG5vdGUgc3VyIDEwKSIsDQogICAgeSA9ICJEZW5zaXTDqSINCiAgKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpwX2ludGVyYWN0aXZlIDwtIGdncGxvdGx5KHApDQpwX2ludGVyYWN0aXZlDQpgYGANCg0KKipDb21tZW50YWlyZSoqDQoNCipMZXMgZGlmZsOpcmVuY2VzIGN1bHR1cmVsbGVzIHZhcmllbnQgY29uc2lkw6lyYWJsZW1lbnQgc2Vsb24gbGUgbml2ZWF1IGQnw6l0dWRlcy4gTGVzIMOpdHVkZXMgZHUgcHJlbWllciBjeWNsZSBtb250cmVudCBkZXMgc2ltaWxhcml0w6lzIGN1bHR1cmVsbGVzIGF2ZWMgbGVzIGF1dHJlcyBuaXZlYXV4LCB0YW5kaXMgcXVlIGxlcyDDqXR1ZGVzIGRlIEwzIG1vbnRyZW50IHVuZSB2YXJpYW5jZSBjdWx0dXJlbGxlIHBsdXMgw6lsZXbDqWUuKg0KDQoqTGEgdmFyaWF0aW9uIGRlIGxhIEN1bHR1cmUgR8OpbsOpcmFsZSBzZWxvbiBsZSBOaXZlYXUgZCfDiXR1ZGVzIHN1aXQgdW5lIHRlbmRhbmNlIGTDqWNyb2lzc2FudGUuIEFpbnNpLCBsZXMgw6l0dWRpYW50cyBlbiBMMyBvbnQgdW5lIEN1bHR1cmUgR8OpbsOpcmFsZSBsw6lnw6hyZW1lbnQgc3Vww6lyaWV1cmUgw6AgY2VsbGUgZGVzIMOpdHVkaWFudHMgZW4gTDIgICwgcXVpIG9udCDDoCBsZXVyIHRvdXIgdW5lIEN1bHR1cmUgR8OpbsOpcmFsZSBsw6lnw6hyZW1lbnQgc3Vww6lyaWV1cmUgw6AgY2VsbGUgZGVzIMOpdHVkaWFudHMgZW4gcHJlbWllciBjeWNsZS4qDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQoNCiMgQ2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlcyBmb3IgZWFjaCBjYXRlZ29yeQ0KZGF0YV90cmljaGUgPC0gZGF0YSAlPiUNCiAgY291bnQodHJpY2hlKSAlPiUNCiAgbXV0YXRlKHBvdXJjZW50YWdlID0gbiAvIHN1bShuKSAqIDEwMCkNCg0KIyBDcmVhdGUgdGhlIHBsb3QNCmdncGxvdChkYXRhX3RyaWNoZSwgYWVzKHggPSAiIiwgeSA9IHBvdXJjZW50YWdlLCBmaWxsID0gdHJpY2hlKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5Iiwgd2lkdGggPSAxKSArDQogIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIm91aSIgPSAibGlnaHRncmVlbiIsICJwcmVzcXVlLi4uIiA9ICIjRkVEOTc2IiwgIm5vbiIgPSAiI0M3MDAzOSIpKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiUG91cmNlbnRhZ2UgZCfDqXR1ZGlhbnRzIGF5YW50IHLDqXBvbmR1IHNhbnMgYWlkZSBhdXggcXVlc3Rpb25zIGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSIsDQogICAgeCA9ICIiLA0KICAgIHkgPSAiIiwNCiAgICBmaWxsID0gIlLDqXBvbnNlIg0KICApICsNCiAgdGhlbWVfdm9pZCgpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChyb3VuZChwb3VyY2VudGFnZSwgMSksICIlIikpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSANCmBgYA0KDQoNCiMgQ29uY2x1c2lvbg0KDQpMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZGVzIMOpdHVkaWFudHMgcsOpc3VsdGUgZCd1bmUgaW50ZXJjb25uZXhpb24gY29tcGxleGUgZGUgZGl2ZXJzIGZhY3RldXJzIHRlbHMgcXVlIGxlIGdlbnJlLCBsZSB0ZW1wcyBjb25zYWNyw6kgYXV4IMOpdHVkZXMsIGxlIHN0YWRlIGFjYWTDqW1pcXVlIGV0IGxhIGZpbGnDqHJlIHN1aXZpZS4gVG91dGVmb2lzLCBpbCBlc3QgZXNzZW50aWVsIGRlIHNvdWxpZ25lciBxdWUgY2hhcXVlIMOpdHVkaWFudCBlc3QgdW5lIGVudGl0w6kgdW5pcXVlLCBldCBkZXMgZ8OpbsOpcmFsaXNhdGlvbnMgZXhjZXNzaXZlcyByaXNxdWVudCBkZSBuw6lnbGlnZXIgbGEgcmljaGVzc2UgZGVzIGV4cMOpcmllbmNlcyBldCBkZXMgcGVyc3BlY3RpdmVzIGF1IHNlaW4gZGUgbGEgY29tbXVuYXV0w6kgw6l0dWRpYW50ZS4gTCdhY2NlbnQgc3VyIGwnaW5kaXZpZHVhbGl0w6kgcmVzdGUgcHJpbW9yZGlhbCwgZXQgdW5lIGFwcHJvY2hlIG51YW5jw6llIHMnaW1wb3NlIHBvdXIgYXBwcsOpaGVuZGVyIHBsZWluZW1lbnQgbGEgZGl2ZXJzaXTDqSBkZXMgY3VsdHVyZXMgw6l0dWRpYW50ZXMuDQoNCkVuIHLDqXN1bcOpLCBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZGVzIMOpdHVkaWFudHMgw6ltZXJnZSBkJ3VuZSBjb21iaW5haXNvbiBkw6lsaWNhdGUgZGUgcGFyYW3DqHRyZXMsIGluY2x1YW50IGxlIGNvbnRlbnUgZGVzIHByb2dyYW1tZXMgZCfDqXR1ZGVzLCBsZSBuaXZlYXUgYWNhZMOpbWlxdWUsIGxlIHN0eWxlIGRlIHZpZSBldCBsZXMgY2hvaXggcGVyc29ubmVscy4gUG91ciBmYXZvcmlzZXIgdW4gZW52aXJvbm5lbWVudCDDqWR1Y2F0aWYgw6lxdWlsaWJyw6kgZXQgc3RpbXVsYW50LCBpbCBlc3Qgc3VnZ8OpcsOpIGQnYWRhcHRlciBsZXMgcHJvZ3JhbW1lcyDDqWR1Y2F0aWZzLCBkZSBwcm9tb3V2b2lyIGwnYXV0by1hcHByZW50aXNzYWdlIGV0IGRlIHNlbnNpYmlsaXNlciDDoCBsJ2ltcG9ydGFuY2UgZGUgbGEgZGl2ZXJzaXTDqSBjdWx0dXJlbGxlLiBDZXMgaW5pdGlhdGl2ZXMgY29udHJpYnVlcm9udCDDoCBmb3JtZXIgZGVzIMOpdHVkaWFudHMgbWlldXggaW5mb3Jtw6lzIGV0IHByw6p0cyDDoCByZWxldmVyIGxlcyBkw6lmaXMgZGUgbGV1ciB2aWUgcHJvZmVzc2lvbm5lbGxlIGV0IHBlcnNvbm5lbGxlLg==